/**
 * @file key_driver.h
 * @brief 按键驱动模块头文件
 */
#ifndef KEY_DRIVER_H
#define KEY_DRIVER_H

#include <stdint.h>
#include <stdbool.h>
#include "freertos/FreeRTOS.h"
#include "freertos/queue.h"

/**
 * @brief 按键事件类型定义
 */
typedef enum {
    KEY_EVENT_PRESS = 0,    /*!< 按键按下事件 */
    KEY_EVENT_RELEASE,      /*!< 按键释放事件 */
    KEY_EVENT_LONG_PRESS,   /*!< 按键长按事件 */
} key_event_t;

/**
 * @brief 按键事件回调函数类型定义
 * 
 * @param event 按键事件类型
 */
typedef void (*key_event_callback_t)(key_event_t event);

/**
 * @brief 初始化按键驱动
 * 
 * @param event_queue 用于发送按键事件的队列
 * @return true 初始化成功
 * @return false 初始化失败
 */
bool key_driver_init(QueueHandle_t event_queue);

/**
 * @brief 注册按键事件回调函数
 * 
 * @param callback 回调函数指针
 */
void key_driver_register_callback(key_event_callback_t callback);

#endif /* KEY_DRIVER_H */